package com.cn.wanxi.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.cn.wanxi.dao.UserDao;
import com.cn.wanxi.dao.impl.UserImpl;
import com.cn.wanxi.model.ResultModel;
import com.cn.wanxi.model.UserModel;
import com.cn.wanxi.service.UserService;
import com.cn.wanxi.util.Result;

import java.util.List;

/**
 * 逻辑代码
 */
public class UserServiceImpl implements UserService {
    private UserDao userDao = new UserImpl();

    /**
     * 分析？
     * 1.验证码是否正确
     * 2.如果正确则判断用户名和密码
     * 2.1 如果用户名和密码正确，则返回success
     * 2.2 不正确，则返回error
     * 3.如果不正确，则直接返回错误信息
     *
     * @param userModel
     * @return
     */
    @Override
    public ResultModel login(UserModel userModel) {
//        ResultModel resultModel = new ResultModel();
        if (!userModel.getCode().equals(userModel.getSessionCode())) {
//        } else {
//            JSONObject jsonObject=new JSONObject();
//            resp.getWriter().print("error-code");
//            resultModel.setMsg("error-code");
//            return new ResultModel("error-code");
            return ResultModel.getResultModelByMsg("error-code");
        }
//        根据用户名和密码判断
//        需要将用户名和密码传递到数据库，然后查询出是否有数据
//        如果有，则表示正确，
//        如果没有则表示错误
//        通过数据库查询出结果可以是对象，也可以是数组

        UserDao userDao = new UserImpl();
        UserModel model = userDao.findByUsernameAndPassword(userModel);
//        int a=0;int b=1;int c= a>b?4:5;
        boolean isHave = model == null;//
        if (isHave) {
//            resultModel.setMsg("success");
//                resp.getWriter().print("success");
//        } else {
//            resultModel.setMsg("error");
//            return new ResultModel("error");
//                resp.getWriter().print("error");
            return ResultModel.getResultModelByMsg("error");
        }
//        resultModel.setMsg("success");
//        return new ResultModel("success");
        return ResultModel.getResultModelByMsg("success");
    }

    /**
     * 根据用户名取数据查询判断当前是否有用户
     * 1.如果有，则不能添加（注册）
     * 2.如果没有，则直接添加
     *
     * @param userModel
     * @return
     */
    @Override
    public ResultModel add(UserModel userModel) {
        UserModel model = userDao.findByUsername(userModel);
        boolean isHave = model != null;
        if (isHave) {
            return ResultModel.getResultModel(Result.IS_HAVE, Result.ERROR_CODE, -1, null);
        }

//        UserDao userDao = new UserImpl();
        int count = userDao.add(userModel);

        return ResultModel.getResultModel(Result.IS_NULL, Result.SUCCESS_CODE, count, null);
    }

    @Override
    public ResultModel update(UserModel userModel) {

        int count = userDao.update(userModel);

        return ResultModel.getResultModelByCount(count);
    }

    @Override
    public ResultModel delete(UserModel userModel) {
        int count = userDao.delete(userModel);

        return ResultModel.getResultModelByCount(count);
    }

    @Override
    public ResultModel findAll(UserModel userModel) {
        List<UserModel> userModelList = userDao.findAll(userModel);
        int count = userDao.getCount(userModel);
//        ResultModel resultModel=new ResultModel();
//        resultModel.setData(userModelList);
//        resultModel.setCount(count);
        return ResultModel.getResultModel("", 0, count, userModelList);
    }

    @Override
    public ResultModel findById(UserModel userModel) {
        return ResultModel.getResultModelByAll(userDao.findById(userModel), 0);
    }

    @Override
    public ResultModel getCount(UserModel userModel) {
        int count = userDao.getCount(userModel);

        return ResultModel.getResultModelByCount(count);
    }

    @Override
    public ResultModel changeEnable(UserModel userModel) {
        int count = userDao.changeEnable(userModel);

        return ResultModel.getResultModelByCount(count);
    }
}
